﻿#define _CRT_SECURE_NO_WANINGS 1
#pragma warning(disable: 4996)

#include<stdio.h>


#include <stdio.h>
#include <stdlib.h>
//int main(void)
//{
//	int c; // 注意：int，⾮char，要求处理EOF
//	FILE* fp = fopen("text.txt", "r");
//	if (!fp) {
//		perror("File opening failed");
//		return EXIT_FAILURE;
//	}
//	//fgetc 当读取失败的时候或者遇到⽂件结束的时候，都会返回EOF
//	while ((c = fgetc(fp)) != EOF) // 标准C I/O读取⽂件循环
//	{
//		putchar(c);
//	}
//	//判断是什么原因结束的
//	if (ferror(fp))
//		puts("I/O error when reading");
//	else if (feof(fp))
//		puts("End of file reached successfully");
//	fclose(fp);
//}
//
//int main()
//{
//	FILE* fp = fopen("text.txt", "w");
	/*int c = 0;
	if (NULL == fp)
	{
		perror("fopen");
		return 1;
	}
	fputs("mazeqi is best choice of my life.", fp);
	fclose(fp);
	fp = NULL;
	FILE* p = fopen("text.txt", "r");
	if (NULL == p)
	{
		perror("fopen");
		return 1;
	}
	while (fgetc(p) != EOF)
	{
		c = fgetc(p);
		putchar(c);
	}
	if (ferror(p))
		puts("I/0 error when reading");
	else if (feof(p))
	{
		puts("end of file reached successfully");
		
	}
	fclose(p);
	p = NULL;
	return 0;
}*/

#include <windows.h>
//VS2019 WIN11环境测试
int main()
{
	FILE* pf = fopen("test.txt", "w");
	fputs("abcdef", pf);//先将代码放在输出缓冲区
	printf("睡眠10秒-已经写数据了，打开test.txt⽂件，发现⽂件没有内容\n");
	Sleep(10000);
	printf("刷新缓冲区\n");
	fflush(pf);//刷新缓冲区时，才将输出缓冲区的数据写到⽂件（磁盘）
	//注：fflush 在⾼版本的VS上不能使⽤了
	printf("再睡眠10秒-此时，再次打开test.txt⽂件，⽂件有内容了\n");
	Sleep(10000);
	fclose(pf);
	//注：fclose在关闭⽂件的时候，也会刷新缓冲区
	pf = NULL;
	return 0;
}